#! /usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2020-04-11 17:02
# @Author : youngchaolin

''''''

'''
1 可迭代对象
对象：python中的一切都是对象，一个实实在在存在的东西就是对象
迭代：可以循环、迭代、更新的一个过程
可迭代对象：可以持续循环更新的实实在在的值，内部含有'__iter__'方法的对象，就是可迭代对象
如str list tuple dict set range 文件句柄

优点：
1 存储的数据能直接显示，比较直观
2 拥有的方法比较多，操作方便
缺点：
1 占用内存
2 不能直接通过for循环，不能直接取值

'''

# 查看一个对象的所有方法
s1='messi'
print(s1.__dir__())
# 判断是否存在这个方法
print('__iter__' in s1.__dir__())
print('__iter__' in dir(s1))

# 可迭代对象不能直接取值，下面列表通过for循环可以获取到值，其实内部进行了转换，将列表转化成了一个迭代器
li=[1,2,3,4]
print('__iter__' in li.__dir__()) # True，说明列表就是可迭代对象
print('__next__' in dir(li)) # False，说明不是迭代器
for num in li:
    print(num)